package com.web25;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * Servlet Filter implementation class LogFilter
 */
public class LogFilter implements Filter {
        Log log= LogFactory.getLog("LogFilter");
        private String filterName;
       
    /**
     * Default constructor.
     */
    public LogFilter() {
    }
        /**
         * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
         */
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

                HttpServletRequest req= (HttpServletRequest) request;
                HttpServletResponse res= (HttpServletResponse) response;
               
                long startTime= System.currentTimeMillis();
                String requestUri = req.getRequestURI();
                 requestUri = ( req.getQueryString() == null ) ? requestUri : (requestUri+"?"+req.getQueryString());

                // pass the request along the filter chain
                chain.doFilter(request, response);
               
                long endTime= System.currentTimeMillis();
                log.info( req.getRemoteAddr()+"存取了"+ requestUri + ", 用了"+(endTime-startTime)+ "毫秒" );
        }

        /**
         * @see Filter#destroy()
         */
        public void destroy() {
        	// TODO Auto-generated method stub
        	log.info("關閉"+filterName);
        }
        /**
         * @see Filter#init(FilterConfig)
         */
        public void init(FilterConfig fConfig) throws ServletException {
                filterName= fConfig.getFilterName();
                log.info("開始"+ filterName );
        }

}
